package array.newcode;


import java.util.Stack;
import java.util.ArrayList;
/**
 * @author Dianzhi Han
 * @version 1.0
 * @description: TODO
 * @date 2022/9/27 22:02
 */
public class NC265_PrintListFromTailToHead {
    //方法一，stack方式
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> st = new Stack<>();
        while(listNode != null){
            st.push(listNode.val);
            listNode = listNode.next;
        }
        ArrayList<Integer> list = new ArrayList<>();
        while(!st.empty()){
            list.add(st.pop());
        }
        return list;
    }
}

////方法二，逆置数组
//public class Solution {
//    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//        ArrayList<Integer> list = new ArrayList<>();
//        while(listNode != null){
//            list.add(listNode.val);
//            listNode = listNode.next;
//        }
//        int i = 0;
//        int j = list.size() - 1;
//        while(i < j){
//            Integer temp = list.get(i);
//            list.set(i, list.get(j));
//            list.set(j, temp);
//            i++;
//            j--;
//        }
//        return list;
//    }
//}
////方法三，递归方式
//public class Solution {
//    public void printListFromTailToHeadCore(ArrayList<Integer> list, ListNode listNode)
//    {
//        if(listNode == null){
//            return;
//        }
//        printListFromTailToHeadCore(list, listNode.next);
//        list.add(listNode.val);
//    }
//    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
//        ArrayList<Integer> list = new ArrayList<>();
//        printListFromTailToHeadCore(list, listNode);
//        return list;
//    }
//}
